Predictive memory management

ABSTRACT

Systems, apparatuses, and methods related to predictive memory management are described. Error correction operations can be performed on a memory system and can include a latency associated with performing various error correction techniques on data and the health of physical addresses used to store the data can be predicted based on that latency information. In an example, a method can include determining, by a controller, latency information corresponding to one or more error correction operations performed on data received by the controller, and assigning, based on the latency information corresponding to a health of physical address locations corresponding to the data, and taking an action involving the physical address locations based, at least in part, on the information corresponding to the health of the plurality of physical address locations corresponding to the data.

PRIORITY INFORMATION

This application is a Continuation of U.S. application Ser. No.16/545,372, filed Aug. 20, 2019, which will issue as U.S. Pat. No.11,152,812 on Oct. 19, 2021, the contents of which are incorporatedherein by reference.

TECHNICAL FIELD

The present disclosure relates generally to semiconductor memory andmethods, and more particularly, to apparatuses, systems, and methods forpredictive memory management.

BACKGROUND

Memory devices are typically provided as internal, semiconductor,integrated circuits in computers or other electronic systems. There aremany different types of memory including volatile and non-volatilememory. Volatile memory can require power to maintain its data (e.g.,host data, error data, etc.) and includes random access memory (RAM),dynamic random access memory (DRAM), static random access memory (SRAM),synchronous dynamic random access memory (SDRAM), and thyristor randomaccess memory (TRAM), among others. Non-volatile memory can providepersistent data by retaining stored data when not powered and caninclude NAND flash memory, NOR flash memory, and resistance variablememory such as phase change random access memory (PCRAM), resistiverandom access memory (RRAM), and magnetoresistive random access memory(MRAM), such as spin torque transfer random access memory (STT RAM),among others.

Memory devices can be coupled to a host (e.g., a host computing device)to store data, commands, and/or instructions for use by the host whilethe computer or electronic system is operating. For example, data,commands, and/or instructions can be transferred between the host andthe memory device(s) during operation of a computing or other electronicsystem.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a functional block diagram in the form of a computing systemincluding an apparatus including a memory system in accordance with anumber of embodiments of the present disclosure.

FIG. 2A is a functional block diagram in the form of an apparatusincluding an error correction component in accordance with a number ofembodiments of the present disclosure.

FIG. 2B is another functional block diagram in the form of an apparatusincluding an error correction component in accordance with a number ofembodiments of the present disclosure.

FIG. 3 is a flow diagram representing an example data and predictivememory management operations in accordance with a number of embodimentsof the present disclosure.

FIG. 4 is a flow diagram representing predictive memory managementoperations in accordance with a number of embodiments of the presentdisclosure.

FIG. 5 is a flow diagram representing an example method for predictivememory management in accordance with a number of embodiments of thepresent disclosure.

FIG. 6 is a flow diagram representing another example method forpredictive memory management in accordance with a number of embodimentsof the present disclosure.

DETAILED DESCRIPTION

Systems, apparatuses, and methods related to predictive memorymanagement are described. Error correction operations can be performedon a memory system. Latency information derived from the errorcorrection operations can be used to predict a health of physicaladdresses used to store data in a memory system. For instance, multipletiers and/or levels of error correction can be performed on the databased on characteristics of the error correction utilized at each tierand/or level. One such characteristic can include a latency associatedwith performing various error correction techniques on data and thehealth of physical addresses used to store the data can be predictedbased on that latency information. In an example, a method can includedetermining, by a controller, latency information corresponding to oneor more error correction operations performed on data received by thecontroller, and assigning, based on the latency informationcorresponding to a health of physical address locations corresponding tothe data, and taking an action involving the physical address locationsbased, at least in part, on the information corresponding to the healthof the plurality of physical address locations corresponding to thedata.

Memory devices, such as flash memory devices, can be used to store datain a computing system and can transfer such data between a hostassociated with the computing system. The data stored in a memory devicecan be important or even critical to operation of the computing system.Flash memory devices are utilized as non-volatile memory for a widerange of electronic applications. Flash memory devices typically use aone-transistor memory cell that allows for high memory densities, highreliability, and low power consumption. The data stored in the memorydevice can contain errors that are correctable using error correctionlogic. Sometimes an error in the data is uncorrectable and reporting anuncorrectable error to the host should be avoided.

Two common types of flash memory array architectures are the “NAND” and“NOR” architectures, so called for the logical form in which the basicmemory cell configuration of each is arranged. In the NOR arrayarchitecture, the floating gate memory cells of the memory array aretypically arranged in a matrix.

The gates of each floating gate memory cell of the array matrix aretypically coupled by rows to word select lines and their drains arecoupled to column bit lines. The NOR architecture floating gate memoryarray is accessed by a row decoder activating a row of floating gatememory cells by selecting the word select line coupled to their gates.The row of selected memory cells then place their data values on thecolumn bit lines by flowing different currents depending on if aparticular cell is in a programmed state or an erased state.

A NAND array architecture also arranges its array of floating gatememory cells in a matrix such that the gates of each floating gatememory cell of the array are coupled by rows to word select lines.However, each memory cell is not directly coupled to a column bit lineby its drain. Instead, the memory cells of the array are coupledtogether in series, source to drain, between a source line and a columnbit line.

Memory cells in a NAND array architecture can be configured, e.g.,programmed, to a desired state. That is, electric charge can be placedon or removed from the floating gate of a memory cell to put the cellinto a number of stored states. For example, a single level cell (SLC)can represent two binary states, e.g., 1 or 0. Flash memory cells canalso store more than two binary states, e.g., 00, 01, 10, or 11. Suchcells can be referred to as multi state memory cells, multibit cells, ormultilevel cells (MLCs). MLCs can allow the manufacture of higherdensity memories without increasing the number of memory cells sinceeach cell can represent more than one bit. MLCs can have more than oneprogrammed state, e.g., a cell capable of representing two bits can havethree programmed states and an erased state.

Reading of memory cells can be accomplished by applying an appropriatevoltage to the control gate and the drain and comparing the drain tosource current, which can indicate the voltage threshold (Vt) of thecell, against a reference current, e.g., a “trip point,” to determinethe state of the memory cell. In an example data read operation, 0 voltscan be applied to a selected word line, e.g., to the control gate of acell or cells in the selected word line. A read pass voltage of about 5volts can be applied to unselected word lines, e.g., to the controlgates of cells in the unselected word lines. The drain to sourcecurrent, e.g., the “cell current,” or “drain current,” flowing throughcells on the selected word line, is indicative of the binary logic stateof the cell.

When the cell current of a particular memory cell is above the trippoint, the memory cell is read as having a particular state, e.g., anerased state or a programmed state. When the cell current of theparticular memory cell is below the trip point, the memory cell is readas having a different state. Therefore, a desired configured state ofthe memory cell, e.g., 00, 01, 10, or 11, depends on whether the cellcurrent is above or below the trip point.

Memory cells having a state other than their desired/expected configuredstate, e.g., the state into which they were programmed, represent dataerrors in data being read. Many memory devices employ an error checkingtechnique such as correction code (ECC) checking to detect bit errors indata, e.g., cells having incorrect states. The ECC schemes can beassociated with groups of cells, e.g., memory blocks, memory segments,or memory sectors, and can reduce read failures by detecting andpossibly correcting bit errors. Examples of ECC schemes include, Hammingcodes, Reed-Solomon (RS) codes, Bose-Chaudhuri-Hochquenghem (BCH) codes,circular redundancy check (CRC) codes, Golay codes, Reed-Muller codes,Goppa codes, neighbor-cell assisted error correction codes, low densityparity check (LDPC) error correction codes, and Denniston codes, amongothers.

Read failures occur when accessed data bits, e.g., memory cellsrepresenting information retrieved by a processor, have incorrectstates, and/or the physical addresses associated with the data are worn,or otherwise not operating correctly. Reducing read failures increasesthe operational reliability of memory devices and/or systems. Errorchecking/correcting techniques may not be able to correct some erroneousbits. Data that includes uncorrectable error can cause harm, wasteresources, and/or cause failure in the host, for these reasons,transmitting data with uncorrectable error should be avoided.Furthermore, many error checking techniques can be unsuccessfullyapplied to the data, even when repeated, and data having anuncorrectable error can be transmitted to the host.

In some approaches, these and other error checking techniques areperformed on the memory device by, for example, a controller located onthe memory device. The memory device controller can be a mediacontroller such as a non-volatile memory express (NVMe) controller thatis tightly coupled to the memory device (e.g., the memory cells, blocks,sectors, etc. of the memory device).

As a result, in approaches in which error correction is performed on thememory device (e.g., using a controller or other circuitry resident onthe memory device), the data can be read multiple times and error can bedetected and uncorrectable. Said differently, erroneous bits present inthe data may not be accurately corrected, which can lead to incorrectdata being provided to the host or, in some cases, cause failure of thecomputing system. As used herein, the term “resident on” refers tosomething that is physically located on a particular component. Forexample, the error correction being performed “resident on” the memorydevice refers to a condition in which the error correction is physicallyperformed on the memory device. The term “resident on” can be usedinterchangeably with other terms such as “deployed on” or “located on,”herein.

As storage capability of memory devices increases, these effects canbecome more pronounced as more and more data are able to be stored bythe memory device thereby increasing the quantity of erroneous bitsintroduced to the data. These effects can be further exacerbated by thelimitations of some approaches to error correction provided on memorydevices described above, especially as the amount of data stored inmemory devices and the speed at which data retrieval is expected.

In contrast, embodiments herein are directed to mitigate propagation ofdata containing errors, or data that is likely to contain errors, bypredicting an amount of wear corresponding to physical locations inwhich the data are stored. The prediction of an amount of wear on thedata can be based, at least in part on latency information derived fromthe error correction operations. When an uncorrectable error isidentified, and/or the predicted wear of the data indicates anuncorrectable error (or a heightened likelihood that data associatedwith particular physical address spaces of the memory device couldcontain greater than a threshold quantity of uncorrectable errors), thecontroller can indicate (e.g., alert) the host such that data can besaved before it is unable to be recovered. To facilitate performance ofthe operations described herein, the memory device can includespecialized circuitry (e.g., hardware, logic, integrated circuits, etc.)in the form of an error correction component to perform error correctionoperations on data received from the memory device. For example, in someembodiments, multiple levels of error correction logic can be includedin the error correction component resident on a controller of a memorydevice. The multiple levels of error correction can be performed on databy the memory device, and latency information can be determined aftereach error correction operation is performed to predict an amount ofwear corresponding to a physical address space from which the data wasaccessed.

Embodiments herein can allow for read latencies to be determined basedon one or more read and/or error correction iterations performed on thedata. Each read latency is associated with a residual bit error rate(RBER) and each iteration of the error correction operation can reducethe RBER by a factor. As a result, in some embodiments, the memorydevice can perform error correction operation(s) on data using aninitial error correction logic and, based on the determined readlatencies, take an action involving one more physical address locationscorresponding to the data. The actions taken by the memory device caninclude predicting an amount of wear corresponding to physical addresslocations in which the data was or is stored, retiring a physicaladdress space based on the amount of predicted wear associated with thephysical address space, predict a remaining quantity of data transfercycles left for the physical address locations in which the data was oris stored, or a combination thereof. After determining the readlatencies, the memory device can perform subsequent error correctionoperations using a subsequent error correction logic. By performingmultiple error correction operations using different error correctionlogics, data can be corrected or determined to be uncorrectable andreported to the host as such.

As used herein, “initial error correction operations” refer to errorcorrection operations that are performed on raw data that has not had anerror correction operation of any kind performed on it. Multipleiterations of an initial error correction can be implemented to data.For example, an initial error correction operation can include anoperation to correct errors on data stored by a memory system or memorydevice that arise as a result of the nature of the storagecharacteristics of the memory system or memory device. Initial errorcorrection operations are distinguished from subsequent error correctionoperations in which data incurs one or more subsequent error correctionoperations to detect or correct residual errors (e.g., undetectableand/or uncorrectable errors) that can be present in data subsequent toperformance of an initial error correction operation.

In some approaches, a memory device can perform subsequent errorcorrection operations such as operations to detect and/or correctundetectable and/or uncorrectable errors that are present in datasubsequent to error correction by the memory device. The subsequenterror correction operation can be a different technique of errorcorrection and latency information can be determined after eachiteration of the subsequent error correction to predict a health of thedata and/or the physical addresses associated with the data. In thisway, the memory device can minimize a quantity of uncorrectable errorsthat are propagated through a computing system and thereby reduce aquantity of uncorrectable errors reported to the host device by takingan action (e.g., predicting an amount of wear corresponding to the data)based in part on the determined latencies. In this way, error can becorrected using multiple types of error correction techniques, and thehealth of the information corresponding to the data can be determined.

In the following detailed description of the present disclosure,reference is made to the accompanying drawings that form a part hereof,and in which is shown by way of illustration how one or more embodimentsof the disclosure can be practiced. These embodiments are described insufficient detail to enable those of ordinary skill in the art topractice the embodiments of this disclosure, and it is to be understoodthat other embodiments can be utilized and that process, electrical, andstructural changes can be made without departing from the scope of thepresent disclosure.

As used herein, designators such as “N,” “M,” “P,” “S,” “R,” etc.,particularly with respect to reference numerals in the drawings,indicate that a number of the particular feature so designated can beincluded. It is also to be understood that the terminology used hereinis for the purpose of describing particular embodiments only, and is notintended to be limiting. As used herein, the singular forms “a,” “an,”and “the” can include both singular and plural referents, unless thecontext clearly dictates otherwise. In addition, “a number of,” “atleast one,” and “one or more” (e.g., a number of memory devices) canrefer to one or more memory devices, whereas a “plurality of” isintended to refer to more than one of such things. Furthermore, thewords “can” and “may” are used throughout this application in apermissive sense (i.e., having the potential to, being able to), not ina mandatory sense (i.e., must). The term “include,” and derivationsthereof, means “including, but not limited to.” The terms “coupled,” and“coupling” mean to be directly or indirectly connected physically or foraccess to and movement (transmission) of commands and/or data, asappropriate to the context. The terms “data” and “data values” are usedinterchangeably herein and can have the same meaning, as appropriate tothe context.

The figures herein follow a numbering convention in which the firstdigit or digits correspond to the figure number and the remaining digitsidentify an element or component in the figure. Similar elements orcomponents between different figures can be identified by the use ofsimilar digits. For example, 106 can reference element “06” in FIG. 1 ,and a similar element can be referenced as 206 in FIG. 2 . A group orplurality of similar elements or components can generally be referred toherein with a single element number. For example, a plurality ofreference elements 112-1, . . . , 112-P (e.g., 112-1 to 112-P) can bereferred to generally as 112. As will be appreciated, elements shown inthe various embodiments herein can be added, exchanged, and/oreliminated so as to provide a number of additional embodiments of thepresent disclosure. In addition, the proportion and/or the relativescale of the elements provided in the figures are intended to illustratecertain embodiments of the present disclosure and should not be taken ina limiting sense.

FIG. 1 is a functional block diagram in the form of a computing system100 including an apparatus including a memory system 104 in accordancewith a number of embodiments of the present disclosure. As used herein,an “apparatus” can refer to, but is not limited to, any of a variety ofstructures or combinations of structures, such as a circuit orcircuitry, a die or dice, a module or modules, a device or devices, or asystem or systems, for example. The memory system 104 can be asolid-state drive (SSD), for instance, and can include a host interface108, a buffer 109, a controller 110, e.g., a processor and/or othercontrol circuitry, and a number of memory devices 112-1 to 112-P, e.g.,solid state memory devices such as NAND flash devices, which provide astorage volume for the memory system 104. In a number of embodiments,the controller 110, a memory device 112-1 to 112-P, and/or the hostinterface 108 can be physically located on a single die or within asingle package, e.g., a managed NAND application. Also, in a number ofembodiments, a memory, e.g., memory devices 112-1 to 112-P, can includea single memory device.

As illustrated in FIG. 1 , the controller 110 can be coupled to the hostinterface 108 and to the memory devices 112-1 to 112-P via one or morechannels and can be used to transfer data between the memory system 104and a host 102. The host interface 108 can be in the form of astandardized interface. For example, when the memory system 104 is usedfor data storage in a computing system 100, the interface 108 can be aserial advanced technology attachment (SATA), peripheral componentinterconnect express (PCIe), or a universal serial bus (USB), a doubledata rate (DDR) interface, among other connectors and interfaces. Ingeneral, however, interface 108 can provide an interface for passingcontrol, address, data, and other signals between the memory system 104and a host 102 having compatible receptors for the host interface 108.

The host 102 can be a host system such as a personal laptop computer, adesktop computer, a digital camera, a mobile telephone, aninternet-of-things (IoT) enabled device, or a memory card reader,graphics processing unit (e.g., a video card), among various other typesof hosts. The host 102 can include a system motherboard and/or backplaneand can include a number of memory access devices, e.g., a number ofprocessing resources (e.g., one or more processors, microprocessors, orsome other type of controlling circuitry). One of ordinary skill in theart will appreciate that “a processor” can intend one or moreprocessors, such as a parallel processing system, a number ofcoprocessors, etc. The host 102 can be coupled to a host interface 108of the memory system 104 by a communication channel 103.

The buffer 109 can be included on the memory system 104 and be a portionof physical memory storage used to temporarily store data while it isbeing moved from the memory devices 112-1 to 112-P to the controller110. In some embodiments, the host 102 can be responsible for executingan operating system for a computing system 100 that includes the memorysystem 104. Accordingly, in some embodiments, the host 102 can beresponsible for controlling operation of the memory system 104. Forexample, the host 102 can execute instructions (e.g., in the form of anoperating system) that manage the hardware of the computing system 100such as scheduling tasks, executing applications, controllingperipherals, etc.

The computing system 100 can include separate integrated circuits or thehost 102, the memory system 104, the error correction component 106, thebuffer 109, the host interface 108, the controller 110, and/or thememory devices 112-1 to 112-P can be on the same integrated circuit. Thecomputing system 100 can be, for instance, a server system and/or ahigh-performance computing (HPC) system and/or a portion thereof.Although the example shown in FIG. 1 illustrate a system having a VonNeumann architecture, embodiments of the present disclosure can beimplemented in non-Von Neumann architectures, which may not include oneor more components (e.g., CPU, ALU, etc.) often associated with a VonNeumann architecture.

In some approaches, the memory system 104 (e.g., the controller 110),can use one or more error checking techniques such as an errorcorrection code (ECC) to determine whether data (e.g., a memory celland/or a group of cells, e.g., a data word, or sector) stored in thememory devices 112-1 to 112-P, is erroneous, e.g., has an incorrectstate. An erroneous or incorrect state can refer to a state of a memorycell other than the one into which it was programmed or written. Forexample, non-volatile memory cells can be programmed into a particularlogic state, e.g., 1 or 0, and can undergo a program verify operation toconfirm that the cell was programmed to the desired correct state. Insuch approaches, if erroneous bits are detected, error correctionoperations can be performed on the data by the memory system 104.

The controller 110 can include an error correction component 106, whichcan use one or more error checking techniques such as ECC to determinewhether data (e.g., a memory cell and/or a group of cells, e.g., a dataword, or sector) of the memory devices 112-1 to 112-P, is erroneous. Theerror correction component 106 can include, for example, a number ofcomponents in the form of hardware and/or firmware, e.g., one or moreintegrated circuits, and/or software for performing error correctionoperations on data received by the host 102 from the memory system 104.The error correction component 106 can include one or moresub-components, such as the initial ECC logic (e.g., encode component)214 and/or the subsequent ECC logic (e.g., encode component) 216illustrated and described in connection with FIG. 2 , herein.

The error correction component 106 can include ECC logic (e.g., hardwareand/or firmware) to perform error correction operations according toschemes such as Hamming codes, RS codes, BCH codes, CRC codes, Golaycodes, Reed-Muller codes, Goppa codes, neighbor-cell assisted errorcorrection codes, LDPC error correction codes, and Denniston codes,and/or other type of error correction scheme for instance, which canfacilitate error correction on data transferred between the memorydevices 112-1 to 112-P and the host 102.

In some embodiments, the error correction component 106 can receive datafrom the memory devices 112-1 to 112-P via the buffer 109. The data canbe encoded according to one or more ECC schemes prior to beingtransferred from the memory device 112-1 to 112-P to the buffer 109 and,ultimately, the error correction component 106. For example, thecontroller 110 and/or the memory device 112-1 to 112-P can, in someembodiments, encode the data according to one or more ECC schemes priorto transferring the data to the error correction component 106. If theerror correction component 106 receives data that has been previouslyencoded according to one or more ECC schemes by the memory system 104,the error correction component 106 can decode the data according to oneor more ECC schemes as part of performance of an error correctionoperation.

Embodiments are not so limited, however, and in some embodiments, theerror correction component 106 can receive unencoded data from thememory devices 112-1 to 112-P and encode and/or subsequently decode thedata according to one or more ECC schemes. As a result, the errorcorrection component 106 can be responsible for performing all (or atleast a portion of) error correction operations for the computing system100. That is, in some embodiments, error correction on data can beperformed by the memory system 104 by the error correction component 106that is resident on (e.g., tightly coupled to) the host 102.

For example, the controller 110 can determine the latency information bycomparing the first timestamp and/or the second timestamp to the initialtimestamp and assign, based on the latency information, informationcorresponding to a health of the physical address locationscorresponding to the data. Read latencies can be associated with a RBERand can be determined and used to predict the health of data and/orphysical addresses associated with the data. In some embodiments, thecontroller 110 can monitor the health of the data received from thememory devices 112-1 to 112-P via the buffer 109. The health of the datacan refer to a quantity of errors (e.g., bit flip errors, uncorrectableerrors, etc.) present in the data, a quantity of error correctionoperations performed on the data, and/or a predicted remaining quantityof data transfer cycles left for the physical address location which canbe based at least in part on the latency information. The controller 110can determine latency information from determining a difference intimestamps corresponding to error correction operations performed by thecontroller 110. Latency information can be determined after each errorcorrection operation, and the health of the physical address locationscan be determined based in part on the latency information determinedafter each error correction operation.

The controller 110 can be coupled to the memory devices 112 via thebuffer 109. The buffer 109 can be a temporary storage component for thedata prior to the data being read by the controller. The controller 110can include an error correction component 106 resident thereon and thecontroller 110 can be configured to perform using the error correctioncomponent 106, an initial error correction operation on datacorresponding to physical address locations of the memory device. Thecontroller can determine read latencies based on timestamps assigned tothe error correction operations. For example, the controller 110 canassign an initial timestamp when the data is initially read and canassign a first timestamp to an initial error correction operation andperform, using error correction logic present on the error correctioncomponent 106, a subsequent error correction operation. The controller110 can assign a second timestamp to the subsequent error correctionoperation. The controller can determine latency informationcorresponding to the initial and subsequent error correction operations,based at least in part, on the first and second timestamp.

Based on the determined latency information, the controller 110 can takean action involving the physical address locations based, at least inpart on the information corresponding to the health of the physicaladdress locations corresponding to the data. In some embodiments, thecontroller 110 take an action such as predicting an amount of wearcorresponding to a physical address location corresponding to the dataand retiring the physical address location corresponding to the data,based in part on the amount of wear predicted. In other embodiments, thecontroller 110 can take an action by predicting a remaining quantity ofdata transfer cycles left for the physical address locations, based atleast in part on the latency information. Predicting the remainingquantities of data transfer cycles can include retiring the physicaladdress locations following the last data transfer cycle of the quantityof data transfer cycles predicted. The controller 110 can use thispredicted health to initiate one or more read operations, one or moreiterations of error correction using ECC logic corresponding to a firstlevel, and/or one or more subsequent iterations of error correctionoperations using ECC logic corresponding to a subsequent level of errorcorrection.

The controller 110 can initiate performance of an error correctionoperation in response to a determination by the controller 110 that thedata was/is received by the buffer 109 (coupled to the controller 110).For example, in response to a determination by the controller 110 thatdata has been received from the buffer 109, the controller 110 canassign an initial timestamp and can perform, using error correctionlogic resident on the error correction component 106, an initial errorcorrection operation that provides a first level of error correction andassign a first timestamp to the initial error correction operation. Thetimestamp can be a period of time between the initial timestamp (whenthe data is received by the controller 110 from the memory device 112-1to 112-P and/or the buffer 110) and when the data has been read by thecontroller 110. The latency information determined by the controller 110from the first timestamp can be used to determine whether to perform asubsequent error correction operation.

In the above example, the controller 110, using the error correctionlogic resident on the error correction component 106 can perform asubsequent error correction operation that corresponds to the firstlevel or error correction. The controller 110 can assign a secondtimestamp to the subsequent error correction operation, and, determinelatency information corresponding to the initial and subsequent errorcorrection operations, based, at least in part, on the first and/orsecond timestamp. Using these methods, the controller 110 and/or theerror correction component 106 can determine if the data has anuncorrectable error, if the data to be corrected requires a differentlevel of error correction, and/or predict a health of the physicaladdress locations associated with the data that is experiencing errorcorrection operations.

The controller 110 can be configured to determine that the informationcorresponding to the health of the physical address locations associatedwith the data is indicative of one or more of the physical addresslocations experiencing a failure within a particular quantity ofsubsequent data cycles; and retire the plurality of physical addresslocations based on a determined likelihood that the one or more of thephysical address locations will experience the failure within theparticular quantity of subsequent data cycles the assigned healthinformation. In other words, the controller 110 can perform, using anerror correction logic resident on the error correction component 106that provides a second level of error correction, a different errorcorrection operation, based at least in part, on the latency information(e.g., the predicted health of the data).

As mentioned, the error correction component 106 can determine that somedata to be error corrected requires a different (e.g., higher level) oferror correction (e.g., higher precision, etc.) than other data storedby the memory system 104. For example, the error correction component106 can determine that a first unit of data (e.g., a managed unit, suchas a block of data, a sector, one or more codewords, a page of data,etc.) is critical to performance of the computing system 100 and asecond unit of data is less critical to performance of the computingsystem 100, and, based on this determination and latency informationand/or the predicted health of the physical addresses associated withthe data, perform different error correction operations.

As used herein, a “managed unit” (MU) generally refers to a number ofmemory cells that are programmed and/or read together or as a functionalgroup. A managed unit may correspond to a logical block size (e.g., adata transfer size of a host and/or a data management size of a memorysystem), which can be, for example, 4 KB. As an example, a managed unitcan be mapped to a physical block of memory cells. However, embodimentsare not so limited. For example, a managed unit may correspond to morethan a logical block size when a group of memory cells storing user dataand overhead data (e.g., data informative of other data stored withinthe group of memory cells) corresponds to more than a logical blocksize. As an example, the overhead data may include data such asmetadata, error correction code (ECC) data, logical block addresses(LBA) data as well as counters (e.g., read/write counters) associatedwith memory operations performed on a managed unit. In some embodiments,a MU can include multiple codewords. As used herein, a “codeword”generally refers to an element of an error correcting code. A codewordcan, in some embodiments, be an independently encoded data block that isprotected with a cyclic redundancy check (CRC).

The error correction component 106 can assign a higher error correctionpriority to the first unit of data and perform different levels of errorcorrection operations on the first unit of data in response to thedetermination of latency information to assign a health of the data.Depending on the criticality of the second unit of data, in thisexample, the error correction component 106 can either perform an errorcorrection operation on the second unit of data subsequent toperformance of the error correction operation on the first unit of dataor the error correction component 106 can instruct the memory device 104to perform an error correction operation on the second unit of data in,for example, parallel with performance of the error correction operationon the first unit of data.

In some examples, the first level or error correction and the secondlevel of error correction can be different. For example, the errorcorrection component 106 can include ECC logic (e.g., hardware and/orfirmware) to perform multi-levels of error correction operationsaccording to schemes such as Hamming codes, RS codes, BCH codes, CRCcodes, Golay codes, Reed-Muller codes, Goppa codes, neighbor-cellassisted error correction codes, LDPC error correction codes, andDenniston codes, and/or other type of error correction scheme forinstance, or combinations thereof.

For example, the first level or error correction can be a BCH harddecoding with a read retry where iterations of the read operation can berepeated using various voltages. The second level of error correctioncan be a neighbor-cell assisted error correction. In other embodiments,the first level or error correction can be one or more iterations ofLDPC hard decoding error correction operation, and a second level orerror correction can be one or more iterations of LDPC soft decodingiterations. Further, the controller 110 can implement any quantity oferror correction levels.

After the error correction component 106 has performed error correctionoperations (e.g., initial error correction operations and/orsubsequent-error correction operations) on the data, the host 102 canuse the error corrected data in performance of a host computingoperation. Embodiments are not so limited, however, and in someembodiments, once the error correction component 106 has performed errorcorrection operation(s) on the data, the error correction component 106can cause the data to be transferred back to the memory devices 112, orthe controller 110 can determine that the physical address locationsassociated with the data can be retired based on the latencyinformation.

The controller 110 can communicate with the memory devices 112-1 to112-P to control data read, write, and erase operations, among otheroperations. The controller 110 can include, for example, a number ofcomponents in the form of hardware and/or firmware, e.g., one or moreintegrated circuits, such as application-specific integrated circuit(s)(ASIC(s)), field-programmable gate array(s) (FPGA(s)), and/or softwarefor controlling access to the number of memory devices 112-1 to 112-Pand/or for facilitating data transfer between memory devices 112-1 to112-P and the host 102. The controller 110 can include variouscomponents not illustrated so as not to obscure embodiments of thepresent disclosure to control data read, write, erase, etc. operations.Such components may not be components of controller 110 in someembodiments, e.g., the components to control data read, write, erase,etc. operations can be independent components located within the memorysystem 104.

The memory devices 112-1 to 112-P can include a number of arrays ofmemory cells. The arrays can be flash arrays with a NAND architecture,for example. However, embodiments are not limited to a particular typeof memory array or array architecture. The memory cells can be grouped,for instance, into a number of blocks including a number of physicalpages. A number of blocks can be included in a plane of memory cells andan array can include a number of planes.

The memory devices 112-1 to 112-P can include volatile memory and/ornon-volatile memory. In a number of embodiments, memory devices 112-1 to112-P can include a multi-chip device. A multi-chip device can include anumber of different memory types and/or memory modules. For example, amemory system can include non-volatile or volatile memory on any type ofa module. In embodiments in which the memory devices 112-1 to 112-Pinclude non-volatile memory, the memory devices 112-1 to 112-P can beflash memory devices such as NAND or NOR flash memory devices.

Embodiments are not so limited, however, and the memory devices 112-1 to112-P can include other non-volatile memory devices such as non-volatilerandom-access memory devices (e.g., NVRAM, ReRAM, FeRAM, MRAM, PCM),“emerging” memory devices such as resistance variable (e.g., 3-DCrosspoint (3D XP)) memory devices, memory devices that include an arrayof self-selecting memory (SSM) cells, etc., or combinations thereof.Resistance variable memory devices can perform bit storage based on achange of bulk resistance, in conjunction with a stackable cross-griddeddata access array. Additionally, in contrast to many flash-basedmemories, resistance variable non-volatile memory can perform a writein-place operation, where a non-volatile memory cell can be programmedwithout the non-volatile memory cell being previously erased. Incontrast to flash-based memories and resistance variable memories,self-selecting memory cells can include memory cells that have a singlechalcogenide material that serves as both the switch and storage elementfor the memory cell.

The memory devices 112-1 to 112-P can provide main memory for thecomputing system 100 or can be used as additional memory or storagethroughout the computing system 100. Each memory device 112-1 to 112-Pcan include one or more arrays of memory cells, e.g., volatile and/ornon-volatile memory cells. The arrays can be flash arrays with a NANDarchitecture, for example. Embodiments are not limited to a particulartype of memory device. For instance, the memory device can include RAM,ROM, DRAM, SDRAM, PCRAM, RRAM, and flash memory, among others.

FIGS. 2A and 2B are functional block diagrams in the form of apparatuses201 including an error correction component 206 in accordance with anumber of embodiments of the present disclosure. The error correctioncomponent 206 can be analogous to the error correction component 106illustrated in FIG. 1 , herein. As shown in FIG. 2A, the errorcorrection component 206 can include an initial ECC logic 214 and asubsequent ECC logic 216. As shown in FIG. 2B, the initial ECC logic 214further includes a first level error correction 218, while thesubsequent ECC logic 216 further includes an N^(th) level errorcorrection 222. The error correction component 206 can be resident on(e.g., physically deployed on) a memory system, such as the memorysystem 104 illustrated in FIG. 1 .

The initial ECC logic 214 and the subsequent ECC logic 216 can include,for example, a number of components in the form of hardware and/orfirmware, e.g., one or more integrated circuits, such asapplication-specific integrated circuit(s) (ASIC(s)), field-programmablegate array(s) (FPGA(s)), and/or software for performing error correctionoperations on data transferred between a host (e.g., the host 102illustrated in FIG. 1 ) and memory devices (e.g., the memory devices112-1 to 112-P illustrated in FIG. 1 ).

The initial ECC logic 214 can be implemented as a BCH ECC and/or aniterative encoder/decoder such as an LDPC ECC encoder/decoder, or othersuitable encoder to encode data received from a memory system as part ofperformance of an error correction operation on the received data.Similarly, the subsequent ECC logic 216 can be implemented as a BCH ECCencoder/decoder and/or an iterative encoder/decoder such as an LDPCencoder/decoder, or other suitable encoder/decoder to encode and/ordecode data received from a memory system as part of performance of anerror correction operation on the received data.

As described above, the error correction component 206 can receive datafrom a memory device (e.g., the memory devices 112-1 to 112-Pillustrated in FIG. 1 ) and perform an error correction operation on thedata. Performance of an error correction operation can includeimplementing one or more error correction codes to correct for errors inthe data.

In some embodiments, the initial ECC logic 214 and/or the subsequent ECClogic 216 can implement multiple tiers of encoding and/or decoding. Forexample, the initial ECC logic 214 and/or the subsequent ECC logic 216can include a first level error correction 218 and/or an N^(th) levelerror correction 222. For example, the initial ECC logic 214 can includea first level error correction 218 in the form of a BCH code. Similarly,the subsequent ECC logic 216 can include an N^(th) level errorcorrection 222 in the form of an LDPC decoder. Embodiments of thepresent disclosure are not limited to the particular quantities and/ortypes of ECC set forth above, however, and can include additional ECC,and/or different types or ordering of ECC than those described above.

According to various embodiments of the present disclosure, the initialECC logic 214 and/or the subsequent ECC logic 216 can selectivelyimplement an all LDPC ECC scheme (e.g., using the initial ECC logic 214and the subsequent ECC logic 216) or a tiered ECC scheme which has aninitial BCH code (e.g., resulting in first level error correction 218),and an LDPC code and a subsequent LDPC code (e.g., resulting in theN^(th) level error correction). In other examples, the initial ECC logic214 and/or the subsequent ECC logic 216 can selectively implement an allBCH (or other ECC scheme) (e.g., using the initial ECC logic 214 and thesubsequent ECC logic 216) or a tiered ECC scheme which has an initialBCH code (e.g., resulting in first level error correction 218), and aneighbor-cell assisted error correction (NAC) code and a subsequent NACcode (e.g., resulting in the N^(th) level error correction). In thetiered ECC schemes described above, a BCH code, a LDPC, a NAC, and/orother ECC schemes can run for multiple iterations, for example. Theresidual errors can result in latency information which can prompt thecontroller (e.g., the controller 110 of FIG. 1 ) to predict a health ofthe data and/or the physical addresses associated with the data. Basedon the prediction, the controller can take an action and/or escalate toa different level of error correction using a different ECC scheme.

In the above example, the controller can be configured to performmultiple iterations of the different error correction operations. Themultiple iterations of error correction operations can be differenttechniques of error correction and latency information can be determinedafter each iteration of the subsequent error correction to predict ahealth of the data and/or the physical addresses associated with thedata. In this way, the memory device can avoid storing data in physicaladdress spaces that exhibit a higher likelihood of impartinguncorrectable errors to data stored therein, which can reduce a quantityof uncorrectable errors that are propagated through a computing systemby taking an action (e.g., predicting an amount of wear corresponding tothe physical address space associated with the data) based in part onthe determined latencies. This can, in turn, allow for avoidance ofreporting uncorrectable error to the host device.

The controller my implement any combination of ECC to comprise multipletiers of ECC. For example, the error correction component 206 cancomprise multiple ECC logics to provide multiple levels of errorcorrection. As described above, examples of ECCs include, Hamming codes,RS codes, BCH codes, CRC codes, Golay codes, Reed-Muller codes, Goppacodes, neighbor-cell assisted error correction codes, LDPC errorcorrection codes, and Denniston codes, among others, and the errorcorrection component 206 can be configured to implement one or more ofsuch ECCs in various orders as part of providing multiple tiers of ECCto data received by the error correction component 206.

The controller can escalate from a first level error correction 218 to aN^(th) level error correction 222 based, at least in part, on latencyinformation and/or the predicted health determined by the controller andbased at least in part on the assignment of timestamps to iterations ofthe ECCs. For example, the controller can be configured to assigntimestamps to each iteration of the multiple iterations of the differenterror correction operation, and determine a latency corresponding to theerror correction logic (e.g., the initial ECC logic 214 and/or thesubsequent ECC logic 216), based, at least in part, on the timestampsassigned to each operation of different error correction operations andan initial timestamp (when the data is received by the controller fromthe memory device e.g., memory device 112-1 to 112-P and/or the buffer110 of FIG. 1 and/or when the data 315 is initially read). Based ondeterminations of latency information, the controller can take an actionsuch as determine additional error correction operations that may berequired, predict an amount of wear corresponding to the data, retiringa physical address corresponding to the data based on the amount of wearpredicted, predict a remaining quantity of data transfer cycles left forthe physical address locations corresponding to the data, or acombination thereof. Additionally, the controller can determine that thedata is not correctable and report the uncorrectable data to the host(e.g., the host 102 of FIG. 1 ). Using these methods, the memory system(e.g., the memory system 100 of FIG. 1 ) can avoid the receipt ofuncorrectable data.

FIG. 3 is a flow diagram representing example data 315 and predictivememory management operations in accordance with a number of embodimentsof the present disclosure. FIG. 3 illustrates a buffer 309 and acontroller 310 which can be analogous to the buffer 109 and thecontroller 110 described in connection with FIG. 1 . FIG. 3 furtherillustrates a first level of error correction 318 and an N^(th) levelerror correction 322, which can be included in an error correctioncomponent (e.g., the error correction component 106 described inconnection with FIG. 1 ) and be analogous to the first level errorcorrection 218 and the N^(th) level error correction 222 described inconnection with FIG. 2B.

The buffer 309, the controller 310, the first level of error correction318, and the N^(th) level error correction 322 can be a part of acomputing system (e.g., the computing system 100 of FIG. 1 ). Althoughnot illustrated here as to not obscure the examples of the disclosure, ahost (e.g., the host 102 of FIG. 1 ) can be coupled to a memory system(e.g., the memory system 104 of FIG. 1 ), and the controller 310 can beresident on the memory system.

The data 315 can be stored in a memory device (e.g., the memory devices112 of FIG. 1 ) and be buffered in the buffer 309 until it is read bythe controller 310. For example, the controller 310 can be configured toreceive the data 315 (at block 317) from a memory device via the buffer309. The data 315 can correspond to an operation of the host. In someembodiments, the host can request the data 315 from the memory device toexecute an operation.

The controller 310 can assign an initial timestamp 325 to the data 315.The initial timestamp 325 can be when the data is initially receivedfrom the buffer 309 and/or the memory device, and/or when the data 315is initially read. To avoid reporting uncorrectable error beingtransferred to the host, the controller 310 can perform one or moreerror correction operations. For example, the controller 310 can beconfigured to perform one or more error correction operations at thefirst level of error correction 318. In some embodiments, the controller310 can perform an initial error correction operation at differingrespective discrete read voltages, and the initial error correctionoperation can correspond to a first level of error correction 318 on thedata 315. The controller 310 can assign a timestamp 324-1 after aninitial error correction operation performed on the data 315. Thecontroller 310 can determine, based on the timestamp 324-1 and theinitial timestamp 325, latency information 326-1.

The controller 310 can determine latency information e.g., latencyinformation 326-1 associated with performing the plurality of initialerror correction operations based on a period of time betweenperformance of respective iterations at the respective discrete readvoltages, and the initial timestamp 325. Based at least in part on thelatency information 326-1, the controller 310 can predict a health ofthe data 315 (e.g., predict an amount of wear corresponding to the data315) and take an action. For example, an action can be the controller310 being configured to predict a remaining quantity of data transfercycles left for the physical address locations corresponding to the data315. Based on the action, the controller 310 can perform anotheriteration of the error correction operation using ECC logiccorresponding to the first level or error correction 318. After theadditional iteration of the error correction operation at the firstlevel of error correction 318, the controller 310 can assign anothertimestamp 324-2 to determine another (e.g., different) latencyinformation 326-2 based on the timestamp 324-2 and the initial timestamp325.

As mentioned herein, the controller 310 can include error correctionlogic configured to perform the initial error correction operations,subsequent error correction operations, or both. Based on the latencyinformation 326-2 determined from the timestamp 324-2, and subsequentpredictions of the heath of the data 315 and/or wear, the controller 310can determine to perform a subsequent error correction operation on thedata 315 using ECC logic that corresponds to an N^(th) level of errorcorrection 322. After performing an iteration of the N^(th) level errorcorrection 322, the controller 310 can assign a timestamp 324-3 todetermine latency information 326-3. The latency information 326-3 canbe based on the timestamp 324-3 and the initial timestamp 325. Thecontroller 310 can use the latency information 326-3 to determine healthinformation for physical address locations corresponding to the data 315based on the subsequent error correction operations performed at theN^(th) level of error correction 322. In this way, the controller 310can predict a health associated with the data 315 and/or predict anamount of wear corresponding to the data and take an action.

The controller 310 can perform multiple iterations of subsequent errorcorrection operations. For example, based at least in part on thelatency information 326-3 determined from the N^(th) level errorcorrection 322 operation that was assigned the timestamp 324-3, thecontroller can perform another iteration of subsequent error correctionoperations at the N^(th) level of error correction 322. The controller310 can assign a timestamp 324-M to the error correction operation atthe N^(th) level of error correction 322 and determine the latencyinformation 326-S. The latency information 326-S can be based on thetimestamp 324-M and the initial timestamp 325. The controller 310 canuse the latency information 326-S to determine health information forphysical address locations corresponding to the data 315 based on thesubsequent error correction operations performed at the N^(th) level oferror correction 322. In this way, the controller 310 can predict ahealth associated with the data 315 and/or predict an amount of wearcorresponding to the data and take an action.

For example, the controller 310 can take an action involving thephysical address locations based, at least in part on the determinedhealth information corresponding to the physical address locations. Insome embodiments, the controller 310 can be configured to predict aremaining quantity of data transfer cycles left for the plurality ofphysical addresses, based at least in part on the latency informatione.g., 326-S associated with the at least one subsequent error correctionoperation. Based on each latency information 326 determined, thecontroller 310 can assign a quantity of remaining data transfer cyclesleft for the physical addresses. The controller 310 can, in someembodiments, be configured to retire the plurality of physical addressesafter the quantity of data transfer cycles has been completed. Themulti-level error correction operation and predictive memory managementcan continue in this way until the controller 310 does not detect anyadditional error, and/or determines that the error is uncorrectable.

FIG. 4 is a flow diagram representing predictive memory managementoperations in accordance with a number of embodiments of the presentdisclosure. FIG. 4 illustrates various levels of error correction,latency information corresponding to performance of the various levelsof error correction, and timestamps assigned to iterations or errorcorrection based on the latency information. FIG. 4 further illustratesa first level of error correction 418, a second level of errorcorrection 420, and an N^(th) level error correction 422, which can beincluded in an error correction component (e.g., the error correctioncomponent 106 described in connection with FIG. 1 ) and be analogous tothe first level error correction 218 and the N^(th) level errorcorrection 222 described in connection with FIG. 2B.

In some embodiments, the first level of error correction 418, the secondlevel of error correction 420, and the N^(th) level of error correction422 can be performed using at least one of a Bose-Chaudhuri-Hocquenghem(BCH) error correcting code, a neighbor-cell assisted error correction(NAC) code, or both, and a subsequent error correction operation can beperformed using the NAC code, a memory protection error correction code,or both. In other embodiments, other error correction code schemes(e.g., Hamming codes, RS codes, etc.) may be used.

The buffer (e.g., the buffer 109 of FIG. 1 ), the controller (e.g., thecontroller 110 of FIG. 1 ), circuitry that performs the first level oferror correction 418, the second level of error correction 420, and theN^(th) level error correction 422 can be a part of a computing system(e.g., the computing system 100 of FIG. 1 ). Although not illustratedhere as to not obscure the examples of the disclosure, a host (e.g., thehost 102 of FIG. 1 ) can be coupled to a memory system (e.g., the memorysystem 104 of FIG. 1 ), and the controller can be resident on the memorysystem.

At 430, the controller can receive, from the memory device via thebuffer, data corresponding to an operation of the host. In someembodiments, the controller can receive a request from the host for thedata. The controller can assign an initial timestamp 425 to the data.The initial timestamp 425 can be assigned responsive to the datareceived from the buffer and/or the memory device, or the initialtimestamp 425 can correspond to the controller beginning a readoperation on the data received from the buffer and/or the memory device.The controller can be configured to adjust respective discrete readvoltages (e.g., VDMs) applied to the data during a read operation.

As used herein, a “discrete read voltage” or “VDM” generally refers to ademarcation voltage which may be applied across the terminals of amemory cell when sensing the state of a memory cell. The state of thememory cell may be sensed based on the reaction of the memory cell tothe applied discrete read voltage. For example, the memory cell mayeither go into a conductive ON state (logic one) or remain in a weaklyconductive OFF state (logic zero). The applied voltage at which a memorycell transitions from being sensed as a logic one to being sensed as alogic zero may be termed a threshold voltage of the memory cell. Thus,as an example, when the VDM is higher than the threshold voltage of thememory cell, the memory cell may be sensed as storing a logic one andwhen the VDM is lower than the threshold voltage of the memory cell, thememory cell may be sensed as storing a logic zero.

At 432 the controller can be configured to read the data with a firstdiscrete read voltage (VDM1) and record a first timestamp 424-1, wherethe first timestamp 424-1 corresponds to completion of the first read bythe controller. The controller can determine a first latency information426-1 based on the first timestamp 424-1 and the initial timestamp 425.The latency information can be used by the controller to predict ahealth of the data. The latency information e.g., latency information426-1, can be used to predict whether data is uncorrectable or corrupt.The latency information e.g., the latency information 426-1 can be usedto prevent reporting of uncorrectable data to a host. The controller cantake an action at block 428-1 involving the physical address locations,based, at least in part on the determined latency information 424-1corresponding to the health of the physical address locationscorresponding to the data.

Taking an action can include determining that a physical addresslocation or multiple physical address locations corresponding to thedata is degraded based at least in part on the latency information, andat block 436-1 ending the read operation. In another embodiment, takingan action can include predicting an amount of wear corresponding to thedata, and retiring a physical address location corresponding to thedata, based in part on the amount or wear predicted. In anotherembodiment, taking an action can include predicting a remaining quantityof data transfer cycles left for the plurality of address locations,based at least in part on the latency information. Predicting theremaining quantities of data transfer cycles can include retiring thephysical address locations following the last data transfer cycle. Ifthere is not an error, the read operation ends at 436-1. If thecontroller determines that the action to be taken is to retire thephysical address locations corresponding to the data, the read operationends at 436-1.

In some embodiments, when the controller determines that there is anerror in the data, and the controller determines that the data ishealthy enough to proceed with error correction operations, thecontroller can adjust the discrete read voltage and attempt to read thedata. At 440, the controller can read the data with a second discreteread voltage (VDM2) and record a second timestamp 424-2. The controllercan determine a second latency information 426-2, based, at least inpart, on the initial timestamp 425 and the second timestamp 424-2.

Based on the second latency information 426-2 the controller can take anaction at 428-2 if physical address locations are retired, or if thecontroller determines that there is no longer error in the data, theoperation can end at 436-2 and the data can be transmitted to the hostand/or saved in the computing device.

In some embodiments, the controller can be configured to repeat readiterations as indicated by the arrow 450 for a number of iterationsuntil it is determined that the data does not contain errors, or until aparticular quantity of iterations have been performed which can bedetermined by the health of the data based on the latency information.The controller can be further configured to adjust the respectivediscrete read voltages of the read operations, initial error correctionoperations, and/or subsequent error correction operations, based atleast in part on the latency information associated with performing theplurality of read operations at the respective discrete read voltagesand/or error correction operations. The controller can be configured tochange the voltage for each iteration, or the voltage can be kept thesame.

For example, the controller can perform one or more initial errorcorrection operations at differing respective discrete read voltages,where the one or more initial error correction operations correspond toa first level of error correction on the data. Specifically, thecontroller can apply an error correction operation corresponding to afirst level of error correction 418. The controller can assign a thirdtimestamp 424-3 and use the third timestamp 424-3 together with theinitial timestamp 425 to determine a third latency information 426-3.The third latency information 426-3 can be used to predict a health ofthe data.

Based on the third latency information 426-3 the controller can take anaction at 428-3 and if physical address locations are retired, or if thecontroller determines that there is no longer error in the data, theoperation can end at 436-3 and the data can be transmitted to the hostand/or saved in the computing device.

The controller may determine that there is residual error in the dataand based on the determined health of the data, the controller canrepeat the initial error correction operation corresponding to the firstlevel of error correction 418 as indicated by the arrow 452. In otherembodiments, the controller can determine that health of the data issufficient and/or a predicted quantity of data transfer cycles has notbeen reached such that more iterations of the initial error correctionoperations are allowed to be performed and/or the controller can performone or more subsequent error correction operations that correspond to asecond level of error correction on the data based, at least in part, onthe predicted health of the data (e.g., the third latency information426-3).

For example, the controller can perform one or more subsequent errorcorrection operations at differing respective discrete read voltages,where the one or more subsequent error correction operations correspondto a second level of error correction on the data. Specifically, thecontroller can apply an error correction operation corresponding to asecond level of error correction 420. The controller can assign a fourthtimestamp 424-4 and determine if there is residual error in the data.The controller can assign the fourth timestamp 424-4 and use the fourthtimestamp 424-4 together with the initial timestamp 425 to determine afourth latency information 426-4. The fourth latency information 426-4can be used to predict a health of the data.

Based on the fourth latency information 426-4 the controller can take anaction at 428-4 and if physical address locations are retired, or if thecontroller determines that there is no longer error in the data, theoperation can end at 436-4 and the data can be transmitted to the hostand/or saved in the computing device.

The controller may determine that there is residual error in the dataand based on the determined health of the data, the controller canrepeat the subsequent error correction operation corresponding to thesecond level of error correction 420 as indicated by the arrow 454. Inother embodiments, the controller can determine that health of the datais good enough and/or a predicted quantity of data transfer cycles hasnot been reached such that more iterations of the subsequent errorcorrection operations are allowed to be performed and/or the controllercan perform one or more subsequent error correction operations thatcorrespond to a N^(th) level of error correction on the data based, atleast in part, on the predicted health of the data (e.g., the fourthlatency information 426-4).

For example, the controller can perform one or more (additional)subsequent error correction operations at differing respective discreteread voltages, where the one or more subsequent error correctionoperations correspond to a N^(th) level of error correction on the data.Specifically, the controller can apply an error correction operationcorresponding to a N^(th) level of error correction 422. The controllercan assign a fifth timestamp 424-M and determine if there is residualerror in the data. The controller can assign the fifth timestamp 424-Mand use the fifth timestamp 424-M together with the initial timestamp425 to determine a fifth latency information 426-S. The fifth latencyinformation 426-5 can be used to predict a health of the data.

Based on the fifth latency information 426-5 the controller can take anaction at 428-P and if physical address locations are retired, or if thecontroller determines that there is no longer error in the data, theoperation can end at 436-R and the data can be transmitted to the hostand/or saved in the computing device.

The controller may determine that there is residual error in the dataand based on the determined health of the data, the controller canrepeat the subsequent error correction operation corresponding to theN^(th) level of error correction 422 as indicated by the arrow 456. Inother embodiments, the controller can determine that health of the datais good enough and/or a predicted quantity of data transfer cycles hasnot been reached such that more iterations of the subsequent errorcorrection operations are allowed to be performed and/or the controllercan perform one or more subsequent error correction operations thatcorrespond to the N^(th) level of error correction on the data based, atleast in part, on the predicted health of the data (e.g., the fourthlatency information 426-4).

In incidences where the error is not correctable, or the controllerdetermines the health of the data to be insufficient, the controller (at458) can report the uncorrectable error to the host and/or the computingsystem. In this way, the memory device can refrain from transmittinguncorrectable data to the host.

FIG. 5 is a flow diagram representing an example method 560 forpredictive memory management in accordance with a number of embodimentsof the present disclosure. At block 562, the method 560 can includedetermining, by a controller (e.g., the controller 110 of FIG. 1 ),latency information corresponding to one or more error correctionoperations performed on data received by the controller. The latencyinformation can be used to predict a health of the data and/or thephysical address locations corresponding to the data

The latency information can be determined from timestamps assigned tothe data after error correction operations. An initial timestamp (e.g.,the initial timestamp 325 of FIG. 3 or the initial timestamp 425 of FIG.4 ) can be assigned when the data is received from the memory device(e.g., the memory devices 112 and/or the buffer 109 of FIG. 1 ), or whenthe controller initiated a read operation on the data. In someembodiments, the method 560 can include assigning, by the controller, afirst timestamp (e.g., the first timestamp 324-1 of FIG. 3 or 424-1 ofFIG. 4 ) to an iteration of the error correction operation that providesa first level (e.g., the first level of error correction 318) of errorcorrection; and determining, by the controller, to perform a subsequentiteration of the error correction operation that provides the firstlevel of error correction, on the data, based at least in part on thelatency information determined from the first timestamp and/or theinitial timestamp. Additional timestamps can be assigned to subsequentiterations of error correction operations.

For example, the method 560 can further include assigning, by thecontroller, a second timestamp (e.g., the second timestamp 324-2) to thesubsequent iteration of the error correction operation that provides thefirst level of error correction; and determining, by the controller, thelatency information based, at least in part, on the second timestamp;and assigning the information corresponding to the health of theplurality of physical address locations, based on the latencyinformation determined from the second timestamp and/or the initialtimestamp. The controller can assign health information to the databased on each determined latency information.

For example, the method 560, at block 564, can include assigning, basedon the latency information, information corresponding to a health of aplurality of physical address locations corresponding to the data. Insome embodiments, the controller can take an action based on the latencyinformation. The method 560, at block 566, can include assigning, basedon the latency information, information corresponding to a health of aplurality of physical address locations corresponding to the data. Suchactions can include, predicting an amount of wear corresponding to thedata and retiring a physical address corresponding to the data, based inpart on the amount of wear predicted; determining that a physicaladdress location corresponding to the data is degraded, and retiring thephysical address location based on that determination of wear; and/orpredicting a remaining quantity of data transfer cycles left for thephysical address locations, and retiring the plurality of physicaladdress locations following the last data transfer cycle of the quantityof data transfer cycles. In the embodiment in which the health of thedata is good, or when there are multiple data transfer cycles left, thecontroller may determine to perform error correction operations atdifferent levels.

For example, the method 660 can include assigning, by the controller,second latency information (e.g., latency information 326-3 of FIG. 3 )to an iteration of the error correction operation that provides a secondlevel of error correction (e.g., the N^(th) level of error correction322 of FIG. 3 ), where the second latency information is based on atimestamp (e.g., the timestamp 324-3 of FIG. 3 ) and/or the initialtimestamp 325; and determining, by the controller, to perform asubsequent iteration of the error correction operation that provides thesecond level of error correction, on the data, based at least in part onthe second latency information.

For example, the method 660 can include assigning, by the controller, adifferent timestamp (e.g., the timestamp 324-M of FIG. 3 ) to thesubsequent iteration of the error correction operation that provides thesecond level of error correction; and determining, by the controller,new latency information (e.g., the latency information 326-S) based, atleast in part, on the different timestamp and/or the initial timestamp;and assigning and/or updating the information corresponding to thehealth of the plurality of physical addresses, based on the new latencyinformation determined from the different timestamp.

FIG. 6 is a flow diagram representing an example method 670 forpredictive memory management in accordance with a number of embodimentsof the present disclosure. At block 672, the method 670, can includemonitoring, by a controller (e.g., the controller 110 of FIG. 1 )coupled to a memory device (e.g., the memory device 112 of FIG. 1 ), ahealth of physical addresses corresponding to data. The controller canmonitor data requests from a host (e.g., the host 102 of FIG. 1 ) anddetermine if the data requires error correction operations prior totransmissions the host.

At block 674, the method 670 includes determining, by the controller,latency information based on iterations of an error correction operationperformed on the data using an error correction component resident onthe controller, wherein the error correction component includesmulti-level error correction using an error correction component (e.g.,error correction component 106 of FIG. 1 ). The error correctioncomponent can include error correction logic (e.g., the initial ECClogic 214 of FIGS. 2A and 2B) resident on the controller, and an errorcorrection operation can provide a multiple levels of error correction(e.g., the first level of error correction 218 and N^(th) level of errorcorrection 222 of FIG. 2 ) on the data. The method 670 can includeassigning timestamps to iterations of the error correction operations todetermine a latency information to determine a health of the data.

For example, at block 676, the method 670 includes determining, by thecontroller, the health of the physical addresses corresponding to thedata, based at least in part on the latency information. The controllercan use the latency information to take an action that may preventreporting uncorrectable data to the host. For example, at block 678, themethod 670 includes predicting a remaining quantity of data transfercycles left for the physical addresses, based at least in part on thelatency information and the health of the plurality of physicaladdresses.

The latency information can be determined by the controller after eachiteration of error correction. For example, the method 670 can includereceiving, by the controller, latency information corresponding to theerror correction operation that provides a first level of errorcorrection; and determining, by the controller, the health of theplurality of physical addresses corresponding to the data, based on thelatency information corresponding to the error correction operation thatprovides the first level of error correction. The controller candetermine the remaining quantity of data transfer cycles after the firstlevel of error correction.

For example, the method 670 can include determining, by the controller,the remaining quantity of data transfer cycles; performing, using theerror correction component, an error correction operation that providesa second level of error correction on the data based, at least in part,on the latency information corresponding to the error correctionoperation that provides the first level of error correction and thehealth of the physical addresses corresponding to the data; anddetermining, by the controller, latency information corresponding to theerror correction operation that provides the second level of errorcorrection. Further, the controller can determine the remaining quantityof data transfer cycles after the first second level of errorcorrection.

For example, the method 670 can include determining the remainingquantity of data transfer cycles; and performing, using the errorcorrection component, an error correction operation that provides athird level of error correction on the data based, at least in part, onthe latency information corresponding to the error correction operationthat provides the second level of error correction and the health of thephysical addresses corresponding to the data; and determining, by thecontroller, latency information corresponding to the error correctionoperation that provides the third level of error correction. Further,the controller can determine the remaining quantity of data transfercycles after the third level of error correction.

For example, the method 670 can include determining the remainingquantity of data transfer cycles; refraining from performing subsequenterror correction iterations based, at least in part, on the latencyinformation, the health of the plurality of physical addressescorresponding to the data, or both; and retiring, by the controller, theplurality of physical addresses corresponding to the data based, atleast in part, on the latency information, the health of the pluralityof physical addresses corresponding to the data, the remaining quantityof data transfer cycles falling below a threshold quantity of datatransfer cycles, or combinations thereof.

Although specific embodiments have been illustrated and describedherein, those of ordinary skill in the art will appreciate that anarrangement calculated to achieve the same results can be substitutedfor the specific embodiments shown. This disclosure is intended to coveradaptations or variations of one or more embodiments of the presentdisclosure. It is to be understood that the above description has beenmade in an illustrative fashion, and not a restrictive one. Combinationof the above embodiments, and other embodiments not specificallydescribed herein will be apparent to those of skill in the art uponreviewing the above description. The scope of the one or moreembodiments of the present disclosure includes other applications inwhich the above structures and processes are used. Therefore, the scopeof one or more embodiments of the present disclosure should bedetermined with reference to the appended claims, along with the fullrange of equivalents to which such claims are entitled.

In the foregoing Detailed Description, some features are groupedtogether in a single embodiment for the purpose of streamlining thedisclosure. This method of disclosure is not to be interpreted asreflecting an intention that the disclosed embodiments of the presentdisclosure have to use more features than are expressly recited in eachclaim. Rather, as the following claims reflect, inventive subject matterlies in less than all features of a single disclosed embodiment. Thus,the following claims are hereby incorporated into the DetailedDescription, with each claim standing on its own as a separateembodiment.

What is claimed is:
 1. A method, comprising: determining, by acontroller, a predicted health of a plurality of memory cells based, atleast in part, on latency information determined during performance ofone or more error correction operations involving the plurality ofmemory cells; determining a quantity of remaining data transfer cyclesinvolving the plurality of memory cells based on the predicted health ofthe plurality of memory cells; determining that the quantity ofremaining data transfer cycles involving the plurality of memory cellswill be fewer than a threshold quantity of data cycles; and retiring, bythe controller, the plurality of memory cells based, at least in part,on the predicted health of the plurality of memory cells and thedetermination that the quantity of remaining data transfer cycles willbe fewer than the threshold quantity of data transfer cycles.
 2. Themethod of claim 1, further comprising determining the latencyinformation based on a timestamp associated with the one or more errorcorrection operations.
 3. The method of claim 1, wherein determining thequantity of remaining data transfer cycles involving the plurality ofmemory cells is based at least in part on the latency information. 4.The method of claim 3, wherein retiring the plurality of memory cellsincludes retiring the plurality of memory cells following a last datatransfer cycle of the quantity of remaining data transfer cycles.
 5. Themethod of claim 1, further comprising: assigning, by the controller, afirst timestamp to an iteration of the one or more error correctionoperations that provides a first level of error correction; anddetermining, by the controller, to perform a subsequent iteration of theone or more error correction operations that provides the first level oferror correction based, at least in part, on latency informationdetermined from the first timestamp.
 6. The method of claim 5, furthercomprising: assigning, by the controller, a second timestamp to thesubsequent iteration of the one or more error correction operations thatprovides the first level of error correction; determining, by thecontroller, latency information based, at least in part, on the secondtimestamp; and assigning information corresponding to the predictedhealth of the plurality of memory cells based, at least in part, on thelatency information determined from the second timestamp.
 7. The methodof claim 1, further comprising: assigning, by the controller, secondlatency information to an iteration of the one or more error correctionoperations that provides a second level of error correction, wherein thesecond latency information is based on a timestamp; and determining, bythe controller, to perform a subsequent iteration of the one or moreerror correction operations that provides the second level of errorcorrection on the data based, at least in part, on the second latencyinformation.
 8. The method of claim 7, further comprising: assigning, bythe controller, a different timestamp to the subsequent iteration of theone or more error correction operations that provides the second levelof error correction; determining, by the controller, new latencyinformation based, at least in part, on the different timestamp; andassigning information corresponding to the predicted health of theplurality of memory cells based on the new latency informationdetermined from the different timestamp.
 9. The method of claim 1,further comprising: receiving, by the controller, latency informationdetermined during performance of the one or more error correctionoperations that provides a first level of error correction; anddetermining, by the controller, a predicted health of a plurality ofmemory cells based, based, at least in part, on the latency informationdetermined during performance of the one or more error correctionoperations that provides the first level of error correction.
 10. Themethod of claim 9, further comprising: determining the remainingquantity of data transfer cycles; performing, using the error correctioncomponent, an error correction operation that provides a second level oferror correction on the data based, at least in part, on the latencyinformation determined during performance of the one or more errorcorrection operations that provides the first level of error correctionand the predicted health of a plurality of memory cells; anddetermining, by the controller, latency information determined duringperformance of the one or more error correction operations that providesthe second level of error correction.
 11. The method of claim 10,further comprising: performing, using an error correction componentresident on the controller, an error correction operation that providesa third level of error correction on the data based, at least in part,on the latency information determined during performance of the one ormore error correction operations that provides the second level of errorcorrection and the predicted health of a plurality of memory cells; anddetermining, by the controller, latency information determined duringperformance of the one or more error correction operations that providesthe third level of error correction.
 12. The method of claim 1, furthercomprising: determining the remaining quantity of data transfer cycles;and refraining from performing subsequent error correction iterationsbased, at least in part, on the latency information, predicted health ofthe plurality of memory cells, or both.
 13. An apparatus, comprising: acontroller coupled to a memory device, the controller including an errorcorrection component resident thereon, wherein the controller isconfigured to: determine a level of error correction based on latencyinformation determined during performance of an initial error correctionoperation and a subsequent error correction operation involving aplurality of memory cells; determine whether to perform additional errorcorrection operations; determine a predicted health of the plurality ofmemory cells based, at least in part, on the determined latencyinformation; write data stored by the plurality of memory cells to thehost, based on an indication that a predicted amount of wear will fallbelow a threshold predicted wear level during a remaining quantity ofdata transfer cycles; and retire the plurality of memory cells based ona determined likelihood that the plurality of memory cells will exceed athreshold predicted wear level during the remaining quantity of datatransfer cycles.
 14. The apparatus of claim 13, wherein the controllerperforms multiple iterations of the initial error correction operationand the subsequent error correction operation.
 15. The apparatus ofclaim 13, wherein the latency information is associated with a residualbit error rate (RBER).
 16. The apparatus of claim 13, wherein thecontroller is further configured to: determine that predicted health ofthe plurality of memory cells is indicative of one or more of theplurality of memory cells experiencing a failure within a particularquantity of subsequent data cycles; and retire the plurality of memorycells based on a determined likelihood that the one or more of theplurality of memory cells will experience the failure within theparticular quantity of subsequent data cycles.
 17. A system, comprising:a host; and a memory system coupled to the host, the memory systemcomprising a controller resident on the memory system, wherein thecontroller is configured to: assign error correction priority to a firstunit of data and a second unit of data; receive, from a memory device,data corresponding to an operation of the host in response to receipt oflatency information corresponding to a predicted health of memory cellsof the memory device; perform an error correction operation on the firstunit of data and the second unit of data concurrently; predict, based onthe latency information corresponding to the predicted health of thememory cells, a quantity of remaining data transfer cycles for thememory cells corresponding to the first unit of data and the second unitof data; write data stored by the memory cells corresponding to thefirst unit of data and the second unit of data to the host, based on anindication that the quantity of predicted remaining data transfer cycleswill be more than the threshold quantity of data transfer cycles; andretire the memory cells corresponding to the first unit of data and thesecond unit of data based, at least in part, on the predicted health ofthe plurality of memory cells and the determination that the quantity ofpredicted remaining data transfer cycles will be more than the thresholdquantity of data transfer cycles.
 18. The system of claim 17, whereinthe controller is further configured to predict the remaining quantityof data transfer cycles left for the plurality of memory cells, based atleast in part on the latency information associated with the at leastone subsequent error correction operation, and on an indication anindication that a predicted amount of wear experienced by the memorycells will fall below a threshold predicted wear level.
 19. The systemof claim 17, wherein the controller is further configured to assign thequantity of remaining quantity of data transfer cycles left for theplurality of memory cells, based at least in part on the predictedremaining quantity of data transfer cycles left for the plurality ofmemory cells.
 20. The system of claim 17, wherein the controller isfurther configured to retire the plurality of memory cells after thequantity of data transfer cycles has been completed.